import reg from 'service/config/reg.js'

export default {
    rules: {
        // 手机号码
        mobile: {
            required: true,
            reg: reg.mobile
        },
        // 密码
        password: {
            required: true,
            reg: reg.password
        },
        // 短信验证码
        smsCode: {
            required: true
        },
        // 现在地址
        nowAddress: {
            required: true
        },
        // 学历
        education: {
            required: true
        },
        // 职业
        profession: {
            required: true
        },
        // 年收入
        yearIncome: {
            required: true,
            reg: /^0$|^([1-9]){1}\d{0,9}$/
        },
        // 公司名字
        companyName: {
            required: true
        },
        // 公司省份
        companyProvince: {
            required: true
        },
        // 公司市级
        companyCity: {
            required: true
        },
        // 公司地址
        companyAddress: {
            required: true
        },
        // 亲属关系
        relationship: {
            required: true
        },
        // 亲属姓名
        relationshipName: {
            required: true
        },
        // 亲属手机号
        relationshipTel: {
            required: true,
            reg: reg.mobile
        },
        // 社会关系
        socialRelation: {
            required: true
        },
        // 社会关系姓名
        socialRelationName: {
            required: true
        },
        // 社会关系手机号
        socialRelationTel: {
            required: true,
            reg: reg.mobile
        },
        // 银行卡号
        bankCard: {
            required: true,
            reg: reg.bankCard
        },
        // 预留手机号
        bankMobile: {
            required: true,
            reg: reg.mobile
        }
    },
    msgs: {
        mobile: {
            required: '请输入手机号码',
            reg: '手机号码格式不正确'
        },
        password: {
            required: '请输入密码',
            reg: '密码格式不正确'
        },
        smsCode: {
            required: '请输入短信验证码'
        },
        nowAddress: {
            required: '请输入常用地址'
        },
        education: {
            required: '请选择学历'
        },
        profession: {
            required: '请选择职业信息中的行业'
        },
        // 月收入
        yearIncome: {
            required: '请输入职业信息中的年收入',
            reg: '年收入输入不合法'
        },
        // 公司名字
        companyName: {
            required: '请输入单位名称'
        },
        // 公司省份
        companyProvince: {
            required: '请选择公司所在省市'
        },
        // 公司市级
        companyCity: {
            required: '请选择公司所在省市'
        },
        // 公司地址
        companyAddress: {
            required: '请输入单位地址'
        },
        // 亲属关系
        relationship: {
            required: '请选择属关系'
        },
        // 亲属姓名
        relationshipName: {
            required: '请输入亲属关系的姓名'
        },
        // 亲属手机号
        relationshipTel: {
            required: '请输入亲属手机号',
            reg: '亲属手机号输入不合法'
        },
        // 社会关系
        socialRelation: {
            required: '请选择社会联系人关系'
        },
        // 社会关系姓名
        socialRelationName: {
            required: '请输入社会联系人姓名'
        },
        // 社会关系手机号
        socialRelationTel: {
            required: '请输入社会联系人手机号',
            reg: '社会联系人手机号输入不合法'
        },
        // 银行卡号
        bankCard: {
            required: '请输入银行卡号',
            reg: '银行卡号码输入不合法'
        },
        // 预留手机号
        bankMobile: {
            required: '请输入预留手机号',
            reg: '预留手机号码输入不合法'
        }
    },
    // 验证 只需要调用这个方法，并将需要验证的字段按顺序写入 items 数组中，并在 rules 和 msgs 中配置相关的信息即可
    verify(items, vm, noHint) {
        // rules 验证规则集合
        // msgs 提示信息集合
        var { rules, msgs } = this
        // 目标元素
        var target = null
        // 目标元素输入值
        var value = null
        // 目标元素对应的一条验证规则
        var rule = null
        // 一条验证规则对应的提示消息
        var msg = null
        // 验证规则中的一项
        var validityItem = null
        // 如果是组件
        var el = null
        for (var ref of items) {
            // 初始化数据
            target = vm.$refs[ref]
            value = target.value
            rule = rules[ref]
            msg = msgs[ref]
            // 如果某一项验证不通过，则不继续验证，并将该项的名称赋值给 validityItem
            if (rule.required && value.trim().length == 0) {
                // 是否必须
                validityItem = 'required'
            } else if (rule.reg && !rule.reg.test(value)) {
                // 正则规则
                validityItem = 'reg'
            }
            // 根据 validityItem 判断验证有没有通过，如果通过，则 validityItem 为空
            el = target.$el || target
            if (validityItem == null) {
                // 验证通过
                el.className = el.className.replace(/verifyError/g, '')
            } else {
                if (!noHint) {
                    // 如果需要不提示，则不提示，仅检验
                    if (validityItem != 'required') {
                        // 如果没有输入内容则不提示
                        el.className += ' verifyError'
                    }
                    $toast.show(msg[validityItem])
                }
                // 不通过，则不验证后面的项
                return false
            }
        }
        return true
    }
}
